package com.zg.api.domain.convert;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zg.api.domain.vo.ApiServiceVo;
import com.zg.common.core.dao.apis.entity.ApiService;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * <p>Description: </p>
 *
 * @author zhanfeng.liang
 * @since 2025/7/9 18:15
 */
@Mapper(componentModel = "spring")
public interface ApiServiceConvert {

    ApiServiceVo toVo(ApiService apiService);

    ApiService toEntity(ApiServiceVo apiService);

    List<ApiServiceVo> toVoList(List<ApiService> users);

    // 带分页的列表转换
//    default Page<ApiServiceVo> toVoPage(Page<ApiService> userPage) {
//        // 使用 Page 的 convert 方法
//        Page<ApiServiceVo> voPage = new Page<>(userPage.getCurrent(), userPage.getSize());
//        voPage.setRecords(userPage.getRecords().stream()
//                .map(this::toVo)
//                .collect(Collectors.toList()));
//        voPage.setTotal(userPage.getTotal());
//        return voPage;
//    }

    default IPage<ApiServiceVo> toVoPage(Page<ApiService> userPage) {
        // 使用 Page 的 convert 方法

        return userPage.convert(this::toVo);
    }
    default IPage<ApiService> toEntityPage(Page<ApiServiceVo> userPage) {
        // 使用 Page 的 convert 方法

        return userPage.convert(this::toEntity);
    }
}
